﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Sql;
using System.Data.SqlClient;
using VentaElectrodomesticos.Utilities;

namespace VentaElectrodomesticos.AbmUsuario
{
    public partial class FormSeleccionEmpleado : Form
    {
        private ClaseSQL sql;
        private FormAltaUsuario formAltaUsuario;

        public FormSeleccionEmpleado(FormAltaUsuario formAltaUsuario)
        {
            InitializeComponent();
            sql = new ClaseSQL();
            this.formAltaUsuario = formAltaUsuario;

            sql.llenarCombo(this.comboBoxProvincias, "SELECT idProvincia, nomProvincia FROM LAG.provincias");
            sql.llenarCombo(this.comboBoxSucursal, "SELECT idSucursal, direccion FROM LAG.sucursales");
            sql.llenarCombo(this.comboBoxTipo, "select idTipoUsu, nomTipoUsu from LAG.usuarios_tipos");
        }

        private void buttonBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                dataGridView.Rows.Clear();
                sql.Open();

                String condiciones = "";
                condiciones += Utils.agregarCondicionExacta(condiciones, "dni", textBoxDni.Text, true);
                condiciones += Utils.agregarCondicion(condiciones, "nombre", textBoxNombre.Text);
                condiciones += Utils.agregarCondicion(condiciones, "apellido", textBoxApellido.Text);
                condiciones += Utils.agregarCondicionConKeyValue(condiciones, "empl.idProvincia", comboBoxProvincias.SelectedItem);
                condiciones += Utils.agregarCondicionConKeyValue(condiciones, "empl.idSucursal", comboBoxSucursal.SelectedItem);
                condiciones += Utils.agregarCondicionConKeyValue(condiciones, "empl.idTipoUsu", comboBoxTipo.SelectedItem);
                condiciones += Utils.agregarCondicionExacta(condiciones, "empl.statusPersona", "1", false);

                String query = "SELECT nombre,apellido,dni,mail,nomProvincia,suc.direccion,nomTipoUsu,idUsuario FROM LAG.vw_empleados empl"
                    + " LEFT JOIN LAG.provincias prov ON empl.idProvincia = prov.idProvincia"
                    + " LEFT JOIN LAG.sucursales suc ON empl.idSucursal = suc.idSucursal"
                    + " LEFT JOIN LAG.usuarios_tipos ut ON empl.idTipoUsu = ut.idTipoUsu" 
                    + condiciones;


                SqlDataReader reader = sql.busquedaSQLDataReader(query);
                while (reader.Read())
                {
                    dataGridView.Rows.Add(
                        reader["idUsuario"],
                        reader["dni"].ToString(),
                        reader["nombre"].ToString(),
                        reader["apellido"].ToString(),
                        reader["mail"].ToString(),
                        reader["nomProvincia"].ToString(),
                        reader["direccion"].ToString(),
                        reader["nomTipoUsu"].ToString()       
                    );
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error al buscar empleado");
            }
            finally
            {
                sql.Close();
            }
        }


        private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // Ignorar clicks que no son en la columna seleccionar 
            if (e.RowIndex < 0 || e.ColumnIndex != dataGridView.Columns["seleccionar"].Index) return;

            formAltaUsuario.setEmpleado(
                dataGridView.CurrentRow.Cells["id"].Value.ToString(),
                dataGridView.CurrentRow.Cells["Nombre"].Value.ToString(),
                dataGridView.CurrentRow.Cells["Apellido"].Value.ToString(),
                dataGridView.CurrentRow.Cells["Dni"].Value.ToString(),
                dataGridView.CurrentRow.Cells["Provincia"].Value.ToString(),
                dataGridView.CurrentRow.Cells["Sucursal"].Value.ToString(),
                dataGridView.CurrentRow.Cells["TipoEmpleado"].Value.ToString()
            );

            this.Close();
        }

        private void buttonLimpiar_Click(object sender, EventArgs e)
        {
            Utils.ClearTextBoxes(groupBox1);
            comboBoxProvincias.SelectedIndex = -1;
            comboBoxSucursal.SelectedIndex = -1;
            comboBoxTipo.SelectedIndex = -1;
            dataGridView.Rows.Clear();
        }

        private void ingresarSoloNumericos(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "[0-9\b]+"))
                e.Handled = true;
        }
    }
}
